package RE.impl.ex3;

import java.util.LinkedList;
import java.util.List;

import RE.api.Configuration;
import RE.api.Rule;
import RE.impl.ex3.Ex3FullConfiguration.*;
import RE.rep.SentenceWithDependenciesAndNER;

/**
 * @author zirolny 30795560 charika 30534360
 */
public class Ex3BestConfiguration implements Configuration<SentenceWithDependenciesAndNER> {
	private LinkedList<Rule<SentenceWithDependenciesAndNER>> configuration;
	
	@Override
	public List<Rule<SentenceWithDependenciesAndNER>> getConfiguration() {
		return configuration;
	}	
	
	@Override
	public void generateConfiguration() {
		configuration = new LinkedList<Rule<SentenceWithDependenciesAndNER>>();
		
		configuration.add(new KillRuleActive());
		configuration.add(new KillRuleSomeonesAssassin());
		configuration.add(new KillRuleGuilty());
		configuration.add(new KillRuleAssassinationOf());
		configuration.add(new KillRulePassiveFixed());
		
		configuration.add(new LocatedInRuleComma());
		configuration.add(new LocatedInRuleLocInLocTokens());
		configuration.add(new LocatedInRuleLocInLocDeps());
		configuration.add(new LocatedInRuleLocationsLocation());
		
		configuration.add(new OrgBasedRuleIn());
		configuration.add(new OrgBasedRuleOf());
		configuration.add(new OrgBasedRuleCapitalizedNNP());
		configuration.add(new OrgBasedRuleBasedIn());
		configuration.add(new OrgBasedRuleHeadquartesIn());
		configuration.add(new OrgBasedRuleLocationAroundOraganization());
		
		configuration.add(new WorkForRuleBrackets());
		configuration.add(new WorkForRuleOfThe());
		configuration.add(new WorkForRuleOfFixed());
		configuration.add(new WorkForRuleWhoWorksFixed());
		configuration.add(new WorkForRuleProfessionFixed()); 
		configuration.add(new WorkForRulePersonForOrg());
		configuration.add(new WorkForRulePersonOfOrg());
		configuration.add(new WorkForRulePersonAppos());
		configuration.add(new WorkForRuleOrganizationsPerson());
		configuration.add(new WorkForRulePersonOfTheOrg());
		configuration.add(new WorkForRulePersonsOrganization());
		
		configuration.add(new LiveInRuleSomeonesHome());
		configuration.add(new LiveInRuleProfession());
		configuration.add(new LiveInCommaAndAge());
		configuration.add(new LiveInRuleHomeInFixed());
		configuration.add(new LiveInPlaceProfessionsFixed());
		configuration.add(new LiveInRuleDepPersonLoc());
		configuration.add(new LiveInRulePresidentsLocation());
		configuration.add(new LiveInRuleLocationsPerson());
		configuration.add(new LiveInRulePersonAppos());
		configuration.add(new LiveInRulePersonOfLoc());
		configuration.add(new LiveInRulePersonFromLoc());
		configuration.add(new LiveInRuleLeadersLocation());
	}
}
